//package com.ruoyi.mall.config;
//
//import com.wechat.pay.java.core.Config;
//import com.wechat.pay.java.core.RSAPublicKeyConfig;
//import com.wechat.pay.java.core.notification.NotificationConfig;
//import com.wechat.pay.java.core.notification.NotificationParser;
//import com.wechat.pay.java.service.payments.h5.H5Service;
//import com.wechat.pay.java.service.payments.jsapi.JsapiService;
//import com.wechat.pay.java.service.payments.nativepay.NativePayService;
//import com.wechat.pay.java.service.refund.RefundService;
//import lombok.Getter;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//
//import javax.annotation.PostConstruct;
//
///**
// * 微信支付配置类
// */
//
//@Configuration
//@Getter
//public class WechatPayConfig
//{
//    /**
//     * appid
//     */
//    @Value("${vx.appId}")
//    private String appId;
//    /**
//     * 小程序密钥
//     */
//    @Value("${vx.secret}")
//    private String secret;
//    /**
//     * 商户号
//     */
//    @Value("${vx.mchId}")
//    private String mchId;
//    /**
//     * 证书序列号
//     */
//    @Value("${vx.mchSerialNo}")
//    private String mchSerialNo;
//    /**
//     * api密钥
//     */
//    @Value("${vx.apiKey}")
//    private String apiKey;
//
//    /**
//     * 商户证书地址
//     */
//    @Value("${vx.keyPath}")
//    private String keyPath;
//
//    /**
//     * 微信支付公钥ID
//     */
//    @Value("${vx.publicKeyId}")
//    private String publicKeyId;
//
//    /**
//     * 微信支付公钥文件地址
//     */
//    @Value("${vx.publicKeyPath}")
//    private String publicKeyPath;
//
//    /**
//     * 微信支付回调地址
//     */
//    @Value("${vx.callbackUrl}")
//    private String callbackUrl;
//
//    private Config config;
//
//    @PostConstruct
//    public void initConfig() {
//        // 一个商户号只能初始化一个配置，否则会因为重复的下载任务报错
//        // RSAPublicKeyConfig 就是公钥验签配置
//        config = new RSAPublicKeyConfig.Builder()
//                .merchantId(mchId)
//                .privateKeyFromPath(keyPath)
//                .publicKeyFromPath(publicKeyPath)
//                .publicKeyId(publicKeyId)
//                .merchantSerialNumber(mchSerialNo)
//                .apiV3Key(apiKey)
//                .build();
//    }
//
//    /**
//     * JSAPI支付
//     * 提供商户在微信客户端内部浏览器网页中使用微信支付收款的能力。（包含小程序）
//     */
//    @Primary
//    @Bean()
//    public JsapiService jsapiService() {
//        return new JsapiService.Builder()
//                .config(config)
//                .build();
//    }
//
//    /**
//     * H5支付
//     * 提供商户在移动客户端浏览器网页（非微信客户端内部浏览器）中使用微信支付收款的能力。
//     * 这里用不到 但是也写出来了。
//     */
//    @Primary
//    @Bean()
//    public H5Service h5Service() {
//        return new H5Service.Builder()
//                .config(config)
//                .build();
//    }
//
//
//    /**
//     * Native 支付
//     * 提供商户在PC端网页浏览器中使用微信支付收款的能力。
//     * 这里用不到 但是也写出来了。
//     */
//    @Primary
//    @Bean()
//    public NativePayService nativePayService() {
//        return new NativePayService.Builder()
//                .config(config)
//                .build();
//    }
//
//    /**
//     * 申请退款
//     */
//    @Primary
//    @Bean
//    public RefundService refundService(){
//        return new RefundService.Builder()
//                .config(config)
//                .build();
//    }
//
//    /**
//     * 支付回调 解密
//     */
//    @Primary
//    @Bean
//    public NotificationParser notificationParser() {
//        return new NotificationParser((NotificationConfig) config);
//    }
//
//
//}
